package cn.tedu.csmall.passport.mapper;

import cn.tedu.csmall.passport.pojo.dto.AdminAddNewDTO;
import cn.tedu.csmall.passport.pojo.entity.Admin;
import cn.tedu.csmall.passport.pojo.vo.AdminListItemVO;
import cn.tedu.csmall.passport.pojo.vo.AdminLoginInfoVO;
import cn.tedu.csmall.passport.pojo.vo.AdminStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 处理管理员业务的接口
 *
 * @author wys
 * @version 0.0.1
 *
 */
@Repository
@Transactional
public interface AdminMapper {

    /**
     * 添加管理员
     *
     * @param admin 管理员数据
     * @return  受影响的行数
     */
    int insert(Admin admin);

    /**
     * 根据id删除管理员数据
     *
     * @param id 管理员id
     * @return  受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据管理员id修改管理员的数据
     *
     * @param admin  封装了管理员id和新的数据的对象
     * @return  受影响的行数
     */
    int updateById(Admin admin);


    /**
     * 根据用户名统计数量
     *
     * @param username 用户名
     * @return 受影响的行数
     */
    int countByUsername(String username);

    /**
     * 根据手机号统计数量
     *
     * @param phone 手机号
     * @return 受影响的行数
     */
    int countByPhone(String phone);

    /**
     * 根据邮箱统计数量
     *
     * @param email 邮箱
     * @return 受影响的行数
     */
    int countByEmail(String email);

    /**
     * 根据id查询管理员详情
     *
     * @param id  管理员id
     * @return 匹配的管理员详情, 如果没有匹配的数据, 则返回null
     */
    AdminStandardVO getStandardById(Long id);

    /**
     * 根据用户名查询管理员的登录信息
     *
     * @param username  用户名
     * @return 匹配的管理员详情, 如果没有匹配的数据, 则返回null
     */
    AdminLoginInfoVO getLoginInfoByUsername(String username);

    /**
     * 查询管理员列表
     *
     * @return 管理员列表数据
     */
    List<AdminListItemVO> list();


}
